package ch08 {
	/**
	 * wide 绘制命令和 NO_OP
	 * wide 绘制命令和 NO_OP
	 * @author jianping.shenjp
	 */
	import __AS3__.vec.Vector;
	import flash.display.GraphicsPathCommand;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;

	[SWF(backgroundColor=0xffffff)]
	public class LineAndCurveDrawing extends Sprite {
		private var commands:Vector.<int> = new Vector.<int>();
		private var lineCommands:Vector.<int> = new Vector.<int>();
		private var data:Vector.<Number> = new Vector.<Number>();

		public function LineAndCurveDrawing(){
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			data.push(200, 200);
			data.push(250, 100);
			data.push(300, 200);
			data.push(400, 250);
			data.push(300, 300);
			data.push(250, 400);
			data.push(200, 300);
			data.push(100, 250);
			data.push(200, 200);
			commands.push(GraphicsPathCommand.MOVE_TO);
			commands.push(GraphicsPathCommand.CURVE_TO);
			commands.push(GraphicsPathCommand.CURVE_TO);
			commands.push(GraphicsPathCommand.CURVE_TO);
			commands.push(GraphicsPathCommand.CURVE_TO);
			lineCommands.push(GraphicsPathCommand.MOVE_TO);
			/**
			 * 一：
			 * 图中出现的问题，是由于 CURVE_TO 需要两个点，而 LINE_TO 只需要一个，
			 * 但命令 LINE_TO 只有4 个，所以只画了一半。
			 */
			//lineCommands.push(GraphicsPathCommand.LINE_TO);
			//lineCommands.push(GraphicsPathCommand.LINE_TO);
			//lineCommands.push(GraphicsPathCommand.LINE_TO);
			//lineCommands.push(GraphicsPathCommand.LINE_TO);	
			/**
			 * 二：
			 * 于是该WIDE_LINE_TO 出场了。这个命令会跳过下一对数据用直线绘制后面的一对数据。因此，
			 * 它可以直接跳过CURVE_TO 所需的控制点。
			 */
			//lineCommands.push(GraphicsPathCommand.WIDE_LINE_TO);
			//lineCommands.push(GraphicsPathCommand.WIDE_LINE_TO);
			//lineCommands.push(GraphicsPathCommand.WIDE_LINE_TO);
			//lineCommands.push(GraphicsPathCommand.WIDE_LINE_TO);
			/**
			 *三:
			 *NO_OP 是一个"不是命令"的命令，它什么也不做。不画直线，也不画曲线，也不会跳过数据。
			 *总之，它 不会消耗掉数据列表中的数据，所 以接下来的LINE_TO还是一如既往的采用接下来的数据。
			 *我这里没有一个具体的例子来说明NO_OP 的必要性，但能想象到一些可能会用到的情况。
			 */
			lineCommands.push(GraphicsPathCommand.NO_OP);
			lineCommands.push(GraphicsPathCommand.LINE_TO);
			lineCommands.push(GraphicsPathCommand.NO_OP);
			lineCommands.push(GraphicsPathCommand.LINE_TO);
			lineCommands.push(GraphicsPathCommand.NO_OP);
			lineCommands.push(GraphicsPathCommand.LINE_TO);
			lineCommands.push(GraphicsPathCommand.NO_OP);
			lineCommands.push(GraphicsPathCommand.LINE_TO);
			graphics.lineStyle(0);
			graphics.drawPath(commands, data);
			graphics.lineStyle(0, 0x000000, .5);
			graphics.drawPath(lineCommands, data);
		}
	}

}